home *** CD-ROM | disk | FTP | other *** search
/ Deutsche Edition 1 / Deutsche Edition 1.iso / amok / amok_lha / amok15.lha / Seafarers_Manual / Source / ModDemo.mod < prev    next >
Text File  |  1993-08-15  |  2KB  |  87 lines

  1. MODULE ModDemo;   (* Show execution of module bodies *)
  2.  
  3.   (* From the book "Modula-2  A Seafarer's Manual and Shipyard Guide" *)
  4.   (* Page 174   adapted "Amiga M2Modula-2"   12 Mar 1988 *)
  5.  
  6. FROM InOut IMPORT Write,
  7.                   WriteLn,
  8.                   WriteString;
  9.  
  10. VAR
  11.   a : INTEGER;
  12.   
  13. PROCEDURE DoThreeMod;
  14.   VAR
  15.     e : REAL;                (* local to procedure *)
  16.  
  17.   MODULE M1;
  18.     IMPORT e;
  19.     EXPORT b,
  20.            c;
  21.  
  22.     VAR
  23.       b : CARDINAL;
  24.     
  25.     MODULE M2;
  26.       IMPORT b;
  27.       EXPORT c;
  28.       
  29.       VAR
  30.         c : CHAR;
  31.       
  32.       BEGIN        (* M2 *)    (* b, c  visible here *)
  33.         b := 0;
  34.         c := "X";
  35.       END M2;
  36.  
  37.  
  38.     BEGIN        (* M1 *)    (* b, c, e  visible here *)
  39.       b := 0;
  40.       c := "Y";
  41.       e := 1.2;
  42.     END M1;
  43.     
  44.   MODULE M3;
  45.     IMPORT a;
  46.     EXPORT QUALIFIED b;
  47.     
  48.     VAR
  49.       b,
  50.       d : REAL;
  51.     
  52.     BEGIN        (* M3 *)    (* a, M3.b, d  visible here *)
  53.       a := -1;
  54.       b := 3.4;
  55.       d := 5.6;
  56.     END M3;
  57.     
  58.     
  59.   BEGIN        (* DoThreeMod *)    (* a, b, M3.b, c, e  visible here *)
  60.     a := -1;
  61.     b := 0;                (* unqualified refers to M1's *)
  62.     M1.b := 0;                (* optionally qualified reference *)
  63.     M3.b := 7.8;            (* mandatory qualified reference *)
  64.     c := "Z";                (* procedure assignments *)
  65.     e := 0.0;                (* supersede module bodies *)
  66.     WriteLn;
  67.     WriteString ("Processing DoThreeMod");
  68.     WriteLn;
  69.     Write (c);
  70.   END DoThreeMod;
  71.   
  72.  
  73. BEGIN        (* ModDemo *)        (* only a  visible here *)
  74.   WriteLn;
  75.   WriteString ("Start Main");
  76.   WriteLn;
  77.   
  78.   DoThreeMod;
  79.   
  80.   a := -9;
  81.   
  82.   WriteLn;
  83.   WriteString ("Finish Main");
  84.   WriteLn; WriteLn;
  85.   
  86. END ModDemo.
  87.